
/*
给定一个排序数组和一个目标值，在数组中找到目标值，并返回其索引。如果目标值不存在于数组中，返回它将会被按顺序插入的位置。

请必须使用时间复杂度为 O(log n) 的算法。

示例 1:

输入: nums = [1,3,5,6], target = 5
输出: 2
示例 2:

输入: nums = [1,3,5,6], target = 2
输出: 1
示例 3:

输入: nums = [1,3,5,6], target = 7
输出: 4


提示:

1 <= nums.length <= 104
-104 <= nums[i] <= 104
nums 为 无重复元素 的 升序 排列数组
-104 <= target <= 104
*/

#include <stdio.h>
int serchInsert(int *nums, int numsSize, int target)
{
    // 二分法，比较值的index
    int indexLeft = 0;
    printf("numsSize %d \n", numsSize);

    int indexRight = numsSize - 1;
    int continue_Bool = 1;
    int i = 0;

    while (indexLeft <= indexRight)
    {
        // value/2
        int indexMid = ((indexRight - indexLeft) / 2) + indexLeft;
        printf("indexMid=%d,indexLeft=%d,indexRight=%d \n", indexMid, indexLeft, indexRight);

        if (nums[indexMid] > target)
        {
            indexRight = indexMid - 1;
            printf("indexMid value > target ,indexRight %d \n", indexRight);
        }
        //
        else if (nums[indexMid] == target)
        {

            printf("indexMid value == target \n");
            return indexMid;
        }
        else
        {
            indexLeft = indexMid + 1;
            printf("indexMid value < target; indexLeft %d \n", indexLeft);
        }
    }

    return indexLeft;
}

int main(int argc, char const *argv[])
{
    /* code */
    int nums[4] = {1, 3, 5, 6};
    // int *num = {1, 3, 5, 6};
    int *num = nums;

    int value = serchInsert(num, 4, 7);

    printf("index value %d", value);

    return 0;
}
